/**
 * 审批相关JS
 */
import { getQuery } from "../framework/common/utils";

let globalModule ={
    //审批后刷新erp页面
    refreshParentWindow: function(options) {
        let tplData = (options && options.tplData) || {};
        //工作流往父页面发送消息afterApprove，用于第三方集成环境在工作流审批后做一些其他处理
        var postData = {
            type: "afterApprove",
            data: { }
        }
        if (options && options.approveType) {
            let newPostData = {
                data: {
                    approveType: options.approveType
                }
            };
            postData = {...postData,...newPostData};
        }

        //工作流被以iframe形式嵌套时，往父级window发送消息
        try{
            window.parent.postMessage(JSON.stringify(postData), '*');
        }catch(e){
        }
        
        //工作流被以window.open形式打开时，往openr发送消息
        try {
            window.opener.postMessage(JSON.stringify(postData), '*');
        } catch (e) {
        }
        
        try {
            var siteUrl = tplData.ServerAddr;

            //根据业务系统判断是否需要用主站点地址刷新，流程中心没有这两个属性，暂时注释掉
            // if (tplData.ProcessInfo.Application == "" || tplData.ProcessInfo.Application == "1001") {
            //     siteUrl = tplData.ProcessInfo.MainSitePath;
            // }

            var frommail = getQuery().frommail;

            //如果是重构的流程，且是由消息中心打开的（url参数frommail判断），就去刷新主站点消息中心
            //if (tplData.ProcessInfo.IsNewErp && typeof (frommail) != "undefined") {
            //流程中心tplData.ProcessInfo.IsNewErp一直是false，暂时不加入这个条件判断
            if (typeof (frommail) != "undefined") {

                if (document.referrer) {
                    var domain = document.referrer.split('/');

                    if (domain[0] && domain[2] && domain[0].toLowerCase().indexOf("http") > -1) {
                        siteUrl = domain[0] + "//" + domain[2];
                    }
                }
            }

            //如果erp系统在url里面带上了erp的网址，则以url带的为准
            var erpdomain = getQuery().erpdomain;
            if (erpdomain) {
                siteUrl = decodeURIComponent(erpdomain);
            }

            var crossDomainJsCallerUrl = siteUrl + "/MyWorkflow/CrossDomainCallAfterWorkflow.html";
            var el1 = document.createElement("iframe");
            el1.setAttribute("class", "hideIframe");
            el1.setAttribute("src", crossDomainJsCallerUrl);
            console.log('tplData', tplData)
            el1.setAttribute("name", tplData.ProcessInfo.ProcessGuid);
            setTimeout(function () {
                document.body.appendChild(el1);
                console.log("审批后erp中转页面追加到流程中心页面");
            }, 101);//延迟101毫秒，是有的系统做了消息集成，工作流审批后，erp消息状态刷新会存在延迟，所以这里延迟101毫秒刷新业务业务系统列表

            //回调刷新方法
            if (window.opener && window.opener.init) {
                window.opener.init.updateList && window.opener.init.updateList(true);
            }
        } catch (e) {
            console.log('refreshParentWindow异常',e)
        }

        try {
            window.opener && window.opener.openApi && window.opener.openApi.refreshPage(false,true);
        } catch (e) {
            console.log('refreshPage异常',e)
        }
    },
    //工作流审批后，处理第三方集成系统的逻辑
    afterWorkflowApprove: function (options) {
        var self = this;
        var urlParams = getQuery();
        if (urlParams.afterApprove) {//afterApprove为第三方OA提供的需要跳转的地址
            window.location.href = decodeURIComponent(urlParams.afterApprove);
            return;
        }

        self.handledClose = false;
        var handledClose = urlParams.handledclose || urlParams.handledClose;
        if (typeof (handledClose) != "undefined" && handledClose.toLowerCase() == "true") {
            self.handledClose = true;
        }
        if (self.handledClose == true) { //OA系统打开,操作完成之后,直接关闭页面
            window.close();
            return;
        }
        if (options.callBack) {//执行工作流自己的动作
            options.callBack();
        }
    }
}

export {globalModule}